# -*- coding: UTF-8 -*-
# @Time : 2022-02-04 2:14
# @User：My.
# @File : LogUtil.py
import logging
import os
import time

# 获取当前路径
currenr = os.path.abspath(__file__)
# 返回路径名 os.path.dirname(返回上一级路径)
BASE_DIR = os.path.dirname(os.path.dirname(currenr))
# 定义logs路径
_config_log = BASE_DIR + os.sep + 'Logs'

# 定义日志级别的映射
loglevel = {
    'info': logging.INFO,
    'debug': logging.DEBUG,
    'warning': logging.WARNING,
    'error': logging.ERROR

}


# 创建日志类
class Logger:

    # 定义参数
    def __init__(self, log_file, log_name, log_level):
        # 实例化路径
        self.log_file = log_file
        # 实例化日志名称
        self.log_name = log_name
        # 实例化日志级别
        self.log_level = log_level

        # 设置Logger名称
        self.logger = logging.getLogger(self.log_name)
        # 设置Logger级别,通过映射获取对应级别
        self.logger.setLevel(loglevel[self.log_level])

        # 创建输出控制台handler
        if not self.logger.handlers:
            # 创建输出控制台handler
            fh_stream = logging.StreamHandler()
            # 设置控制台handler的日志级别
            fh_stream.setLevel(loglevel[self.log_level])
            # 定义控制台输出格式
            formatter = logging.Formatter('%(asctime)s %(name)s %(levelname)s %(message)s ')
            fh_stream.setFormatter(formatter)
            # 添加handler
            self.logger.addHandler(fh_stream)

            # 输出日志文件
            fh_file = logging.FileHandler(self.log_file)
            # 设置输出文件handler的日志级别
            fh_file.setLevel(loglevel[self.log_level])
            fh_file.setFormatter(formatter)
            # 添加handler
            self.logger.addHandler(fh_file)


# 初始化日志参数
# 日志文件名称 = Logs目录 + 当前时间 + 扩展.log
log_path = _config_log
currenr_time = time.strftime('%Y-%m-%d', time.localtime())
log_extension = '.log'
logfile = os.path.join(log_path, log_path + os.sep + currenr_time + log_extension)
# 日志级别
log = 'debug'


# 实例化方法
def my_log(log_name=__file__):
    return Logger(logfile, log_name, log).logger


if __name__ == '__main__':
    log = my_log('test_dome')


